package com.haixiaoke.saas.order.service;

import com.haixiaoke.saas.common.core.domain.AjaxResult;
import com.haixiaoke.saas.order.domain.CheckOutSubOrder;

import java.util.List;

/**
 * 退房订单子级订单退款Service接口
 * 
 * @author panda
 * @date 2024-04-30
 */
public interface ICheckOutSubOrderService {
    /**
     * 查询退房订单子级订单退款
     * 
     * @param checkOutOrderId 退房订单子级订单退款主键
     * @return 退房订单子级订单退款
     */
    CheckOutSubOrder selectCheckOutSubOrderByCheckOutOrderId(String checkOutOrderId);

    /**
     * 查询退房订单子级订单退款列表
     * 
     * @param checkOutSubOrder 退房订单子级订单退款
     * @return 退房订单子级订单退款集合
     */
    List<CheckOutSubOrder> selectCheckOutSubOrderList(CheckOutSubOrder checkOutSubOrder);

    /**
     * 新增退房订单子级订单退款
     * 
     * @param checkOutSubOrder 退房订单子级订单退款
     * @return 结果
     */
    int insertCheckOutSubOrder(CheckOutSubOrder checkOutSubOrder);

    /**
     * 修改退房订单子级订单退款
     * 
     * @param checkOutSubOrder 退房订单子级订单退款
     * @return 结果
     */
    int updateCheckOutSubOrder(CheckOutSubOrder checkOutSubOrder);

    /**
     * 批量删除退房订单子级订单退款
     * 
     * @param checkOutOrderIds 需要删除的退房订单子级订单退款主键集合
     * @return 结果
     */
     int deleteCheckOutSubOrderByCheckOutOrderIds(String[] checkOutOrderIds);

    /**
     * 删除退房订单子级订单退款信息
     * 
     * @param checkOutOrderId 退房订单子级订单退款主键
     * @return 结果
     */
     int deleteCheckOutSubOrderByCheckOutOrderId(String checkOutOrderId);

    /**
     * 批量插入退房订单子级订单退款信息
     * @param checkOutSubOrderList
     * @return
     */
    int insertBatchCheckOutSubOrder(List<CheckOutSubOrder> checkOutSubOrderList);

    /**
     * 退房订单子级订单退款--再次退款
     */
    AjaxResult refundCheckOutSubOrder(CheckOutSubOrder checkOutSubOrder);

    CheckOutSubOrder selectCheckOutSubOrderByOrderId(String orderId);

    /**
     * 校验退房订单子级订单是否存在退款异常
     * @param checkOutOrderId
     * @return
     */
    boolean checkOrderState(String checkOutOrderId);
}
